Decontamination Request
This is an API that requests the transmission of a file to the SHIELDEX server for sanitization (CDR).
Important Notes
- Encoding: All text data must be encoded in UTF-8.
- Callback: The callback URL is
result.callbackURLYou can set it in the field, and you can receive the results after the neutralization is completed. - Job ID Length: Up to 36 characters are allowed, and exceeding this will result in a validation failure.
- Authentication :
Authorization: Bearer <API-KEY>Identifies the integration system with the header. The API Key can be issued from the web console → policies → integration system policies.
1. API Overview
1.1 API List
The decontamination request is provided in both synchronous and asynchronous modes.
| method | Method | API | Explanation |
|---|---|---|---|
| asynchronous | POST | /v5/cdr | Receive the request andjobIDReturns. You can check the decontamination results through the result query API or Callback. |
| motive | POST | /v5/cdr-sync | Returns the final result after the demilitarization is completed. |
Base URL
http://{IP or domain}:{PORT}
| item | Content |
|---|---|
| Default Port | 8060(It can be configured to port 80 depending on the environment) |
| encoding | UTF-8 |
1.2 Integration Method (request.type)
Request for File Transfer Methodrequest.typeSelect.
| item | upload | shared |
|---|---|---|
| File Transfer | Request details (JSON) and filemultipart/form-dataSend together with | Send only the request body (JSON) |
| Preparation | Integration is possible as long as HTTP communication is available. | Configuration of shared folder (NFS) between both servers is required. |
| result file | GET /v5/download/{jobID} | SD_OUTfolder orGET /v5/download/{jobID} |
2. Authentication and Access Control
All requests areAuthorizationInclude the API Key in the header in Bearer token format.
Authorization: Bearer <API-KEY>
2.1 API Key Authentication
| item | Content |
|---|---|
| Delivery Location | HTTP Request Header Authorization |
| Issuance Location | SHIELDEX Web Console > Policy > Integration System Policy screen allows issuance and inquiry. |
2.2 Authentication Failure Response
| situation | HTTP Status | Response Message |
|---|---|---|
| API Key Invalid | 401 Unauthorized | The API Key is invalid. Please verify the API Key. |
| Non-existence of integration system | 401 Unauthorized | The associated system was not found for this API Key. |
3. Decontamination Request
3.1 API Information
# Asynchronous
POST /v5/cdr
POST /v5/cdr/{jobID}
# Synchronous
POST /v5/cdr-sync
POST /v5/cdr-sync/{jobID}
3.2 HTTP Form Submission Method API
Request Path Parameter
Field | Type | Required | Description |
|---|---|---|---|
| String | N |
|
Request Parts (multipart/form-data)
Part | Type | Required | Description |
|---|---|---|---|
| JSON | Y |
|
| File | Y |
|
Request Data JSON Structure
{
"request": {
"type": "upload",
"id": "BATCH-20260818-001"
},
"userinfo": {
"id": "user001",
"name": "홍길동",
"department": "개발팀",
"dutyname": "책임연구원"
},
"fileinfo": {
"filename": "2026_사업계획.hwp"
},
"result": {
"callbackURL": "https://your-callback-url.com/callback"
}
}
Request Data Fields
| Field | Type | Required | Description |
|---|---|---|---|
request.type | String | ==Y== | File Transfer Method - ==upload== |
request.id | String | N | Work Group ID. VariousjobIDis a parent identifier that groups into a single task and has a maximum of 36 characters. |
userinfo.id | String | ==Y== | Unique identifier ID of the requesting user. This is the threshold for log tracking and user-specific policy application. |
userinfo.name | String | N | username |
userinfo.department | String | N | User Department Name |
userinfo.dutyname | String | N | User Position·Title Name |
fileinfo.filename | String | ==Y== | Decontamination Target File Name(with extension). multipartfilemust be the same as the file name. |
result.callbackURL | String | N | Use when the decontamination processing result is a callback (send the "decontamination result" message to the corresponding URL) |
REQUEST Sample
The synchronous method is the request URL to/v5/cdr-syncChange to __PH_0__, and the format for other requests remains the same.
curl -X POST "http://{IP}:8060/v5/cdr" \
-H "Authorization: Bearer your-api-key-here" \
-H "Content-Type: multipart/form-data" \
-F 'data={
"request": {
"type": "upload",
"id": "BATCH-20260818-001"
},
"userinfo": {
"id": "user001",
"name": "홍길동",
"department": "개발팀",
"dutyname": "책임연구원"
},
"fileinfo": {
"filename": "test.pdf"
},
"result": {
"callbackURL": "https://your-callback-url.com/callback"
}
};type=application/json' \
-F "file=@/path/to/test.pdf"
RESPONSE — Submission Successful (200 OK)
Asynchronous method receives the request and thenjobIDreturns.
{
"code": 0,
"msg": "success",
"jobID": "test-job-001"
}
RESPONSE — Decontamination Result (200 OK)
The synchronous method returns the final result after the dematerialization is complete.
{
"jobID": "test-job-001",
"code": 0,
"detailCode": 0,
"logReason": 200000,
"logReasonMsg": "파일 재구성 완료",
"msg": "success"
}
3.3 Folder Sharing Method API
Request Path Parameter
Field | Type | Required | Description |
|---|---|---|---|
| String | N |
|
Request Parts (multipart/form-data)
Part | Type | Required | Description |
|---|---|---|---|
| JSON | Y |
|
| File | N |
|
Request Data JSON Structure
{
"request": {
"type": "shared",
"id": "260622guid12345"
},
"userinfo": {
"id": "user001",
"name": "홍길동",
"department": "개발팀",
"dutyname": "책임연구원"
},
"fileinfo": {
"filename": "57dac8bb-5324-11f1-939c-23ad1125b146.xlsx",
"subDir": "/subPath1/subPath2/subPath3"
},
"result": {
"callbackURL": "https://your-callback-url.com/callback"
}
}
Request Data Fields
| Field | Type | Required | Description |
|---|---|---|---|
request.type | String | ==Y== | File Transfer Method - ==shared== |
request.id | String | N | Work Group ID. VariousjobIDis a parent identifier that groups into a single task and has a maximum of 36 characters. |
userinfo.id | String | ==Y== | Unique identifier ID of the requesting user. This is the threshold for log tracking and user-specific policy application. |
userinfo.name | String | N | username |
userinfo.department | String | N | User Department Name |
userinfo.dutyname | String | N | User Position·Title Name |
fileinfo.filename | String | ==Y== | Decontamination Target File Name(including extension).==Unique file names are required== |
fileinfo.subDir | String | N | When using the "folder sharing method," it can be used as an option value. If using the subDir value, the jobID value must be provided when making a decontamination request. - POST /v5/cdr/=={jobID}== |
result.callbackURL | String | N | Use when the decontamination processing result is a callback (send the "decontamination result" message to the corresponding URL) |
REQUEST Sample
fileSD_INafter copying tofileI will send only the expertise without any part.
The synchronous method is the request URL to/v5/cdr-syncChange to __PH_0__, and the format for other requests remains the same.
curl -X POST "http://{IP}:8060/v5/cdr" \
-H "Authorization: Bearer your-api-key-here" \
-H "Content-Type: multipart/form-data" \
-F 'data={
"request": { "type": "shared" },
"userinfo": { "id": "user001" },
"fileinfo": { "filename": "57dac8bb-5324-11f1-939c-23ad1125b146.xlsx", "subDir": "/subPath1/subPath2/subPath3" }
};type=application/json'
RESPONSE — Submission Successful (200 OK)
Asynchronous method receives the request and thenjobIDreturns.
{
"code": 0,
"msg": "success",
"jobID": "test-job-001"
}
RESPONSE — Decontamination Result (200 OK)
The synchronous method returns the final result after the dematerialization is complete.
{
"jobID": "test-job-001",
"code": 0,
"detailCode": 0,
"logReason": 200000,
"logReasonMsg": "파일 재구성 완료",
"msg": "success"
}